iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
自我挑戰組

從零打造客製化 AI 聊天機器人系列 第 19

[從零打造客製化 AI 聊天機器人] 查詢意圖資料庫

  • 分享至 

  • xImage
  •  

昨天已把意圖資料庫設定好,今天我們要來查詢意圖資料庫。

# 初始化 Azure OpenAI 客戶端
client = AzureOpenAI(
    azure_endpoint=azure_endpoint,
    api_key=api_key,
    api_version=api_version
)

# 初始化 ChromaDB 客戶端
chroma_client = chromadb.PersistentClient(path="./data/cut")

# 取得 collection
collection_name = "taipei_tourist_intents"
collection = chroma_client.get_collection(name=collection_name)

# 測試意圖查詢
def query_intent(user_input):
    # 使用 jieba 分詞
    user_input_cut = " ".join([w for w in list(jb.cut(user_input))])

    # 生成用戶輸入的向量
    response = client.embeddings.create(
        input=user_input_cut,
        model=embedding_model_name
    )
    embedding = response.data[0].embedding

    # 查詢最相似的意圖
    results = collection.query(
        query_embeddings=[embedding],
        n_results=1,
        include=['distances']
    )

    # 提取距離
    distance = results['distances'][0][0] # 提取第一個匹配的距離
    print(f"相似度距離: {distance}")
    
    # 設置相似度閾值
    distance_threshold = 0.8  # 可根據實驗調整此值

    if distance < distance_threshold:
        matched_intent = results['documents'][0]
        action = results['metadatas'][0]
        print(f"匹配到的意圖: {matched_intent}")
        print(f"對應的行動: {action}")
    else:
        print("無法匹配到相關意圖,請重新輸入。")

# 測試輸入
user_input = input("我:")
  • 初始化 Azure OpenAI 和 ChromaDB:建立和配置 Azure OpenAI 以及 ChromaDB 客戶端。
  • 取得 collection:從 ChromaDB 中取得資料集,進行意圖查詢。
  • 測試意圖查詢 query_intent 函數
    1. 使用 jieba 對使用者輸入的對話進行分詞:進行分詞方便後續向量化處理。
    2. 使用 Azure OpenAI 生成使用者輸入內容的向量:使用分詞後的內容生成嵌入向量,這是查詢相似度的核心部分。
    3. 查詢 collection 與該向量最相似的意圖:在資料集中查找與生成向量最相似的意圖。
    4. 提取匹配結果相似度:取得查詢結果中匹配項目的相似度,以衡量意圖的相關性。
    5. 設定相似度閾值:設定相似度的門檻值,來判斷查詢結果是否能認為是有效的匹配。
    6. 比較是否相似後輸出匹配結果:如果相似度低於閾值,顯示匹配到的意圖及對應行動。
    7. 若無法匹配會顯示無相關意圖:如果相似度不滿足條件,給出提示說明沒有匹配的意圖。

以下就是執行查詢的程式結果:
若輸入"我想了解景點介紹",匹配結果正確,就會顯示意圖。
https://ithelp.ithome.com.tw/upload/images/20241002/20169415XMPnXRoM3m.png
若輸入"今天天氣",無匹配的結果正確,就會顯示沒有意圖
https://ithelp.ithome.com.tw/upload/images/20241002/201694152Xi5yQgJEy.png


上一篇
[從零打造客製化 AI 聊天機器人] 設置意圖資料庫
下一篇
[從零打造客製化 AI 聊天機器人] 意圖執行函式
系列文
從零打造客製化 AI 聊天機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言